home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / HARDWARE / IICALARM / !iicAlarm / !Hilfe < prev    next >
Text File  |  1994-05-22  |  10KB  |  213 lines

  1.  
  2.  -- !Help -- !iicAlarm 1.00
  3.  
  4. von Andreas Barth, May 1994
  5.  
  6. Eine Hardware-Erweiterung um den Computer automatisch ein/auszuschalten.
  7.  
  8. !iicAlarm benutzt die Alarm-Funktionen des Archimedes-Uhrenbaustein PCF8583,
  9. die zur Zeit unbenutzt sind.
  10. Man kann eine Alarm-Zeit setzen, zu der dann eine Leitung geschaltet wird.
  11. Mit einer kleinen Schaltung kann man dann den Computer einschalten.
  12. Unter dem Desktop werden die gewünschten Programme durch die !Alarm-Applikation
  13. aufgerufen, und am Ende eines automatischen Ablaufes wird die nächste Alarm-
  14. Zeit gesetzt und der Rechner durch eine IO-Leitung ausgeschaltet.
  15.  
  16. Benötigt RiscOS 3.
  17.  
  18. Einleitung
  19. ----------
  20. Der Uhrenbaustein im Archimedes, ein PCF8583, hat 240 Bytes CMOS Ram,
  21. 8 Bytes Uhreninformationen und 8 Bytes Alarmregister, die zur Zeit unbenutzt
  22. sind und auch als Ram benutzt werden könnten.
  23. RiscOS benutzt die 8 Bytes Alarmregister zur Zeit nicht.
  24. Der Baustein besitzt einen Alarm-Ausgang, der durch das Alarm-System gesetzt
  25. werden kann und zu einer vorgegebenen Zeit etwas schalten kann. Benutzt man
  26. eine einfache FlipFlop-Schaltung, deren Eingänge um mehrere Sekunden verzögert
  27. werden und dessen Ausgang ein (elektronisches Last-)Relais ansteuern kann,
  28. so kann man den Computer damit schalten.
  29. Man benötigt dann noch etwas Software, die den Alarm-Status ermittelt oder
  30. die Alarm-Zeit setzt.
  31. Um es möglichst einfach zu machen, benutze ich die !Alarm-Applikation um die
  32. Zeit-Daten zu verwalten. Unter RiscOS 3 kann !Alarm Task-Alarme auslösen, die
  33. ein Programm, *Command oder Batchfile starten können.
  34. So muß die iicAlarm-Software nur noch die Alarm-Datenbank nach der nächsten
  35. Task-Alarm-Zeit durchsuchen um sie im Uhrenbaustein zu setzen.
  36. Die Verwaltung obliegt somit völlig der !Alarm-Applikation.
  37.  
  38.  
  39. Software
  40. --------
  41. !iicAlarm greift an den wesentlichen Teilen des Rechnersystems
  42. in die Kontrollen ein und muß beim einschalten/booten und ausschalten/
  43. resetten berücksichtigt werden.
  44.  
  45. Fünf kleine Programme erleichtern einem die Arbeit.
  46. Während des Rechnerlaufes sollte nun folgendes passieren:
  47.  
  48. <Der Rechner geht an und bootet von Diskette oder Festplatte>
  49. - Beim normalen BOOT-Vorgang wird die Umgebungsvariable <Alarmfile> gesetzt.
  50.   (z.B. *Set Alarmfile System:Alarms)
  51.   Sie zeigt auf DIE gültige !Alarm-Datei, die auch bei normaler Benutzung
  52.   des Desktops immer geladen werden soll. !iicAlarm greift auf diese Datei zu
  53.   um die Zeit herauszufinden an dem der Rechner automatisch eingeschaltet
  54.   werden soll.
  55.  
  56. - !iicAlarm -- Muß beim Bootvorgang aufgerufen werden.
  57.   Es stellt fest, auf welche Art und Weise der Rechner eingeschaltet wurde
  58.   und ob das Alarmsystem bereits aktiviert war.
  59.   Daraufhin werden einige Umgebungsvariablen gesetzt.
  60.   Liest sich die Alarmdatei durch und sucht die aktuelle und die nächste
  61.   Task-Alarm-Zeit. (Bug: Wenn der aktuelle Alarm-Rekord durch ein Repeat
  62.   auch zum nächsten wird, haben wir einen Fehler. Das kann die Routine
  63.   nämlich noch nicht.)
  64.   Das keyScan-Modul wird geladen.
  65.  
  66. - Im Desktop muß !Alarm gestartet werden mit <Alarmfile> als Argument,
  67.   damit es direkt mit dem richtigen Alarmfile anfängt.
  68.   !Alarm startet auch die gewünschten Programme und verwaltet die Zeiten wie
  69.   gewohnt. Solange der Rechner an ist, werden alle Task-Alarms wie gewohnt
  70.   gestartet und verwaltet.
  71.  
  72.  
  73.  
  74. - !AlarmOff   -- *AlarmOff
  75.   Kann jederzeit aufgerufen werden, um die Alarmfunktionen auszuschalten,
  76.   und ein weiteres automatisches einschalten des Rechners zu unterbinden.
  77.   Der Alarmzustand der Uhr wird deaktiviert und verriegelt.
  78.  
  79. - !AlarmOn    -- *AlarmOn
  80.   Kann jederzeit aufgerufen werden, um die Alarmfunktionen zu aktivieren.
  81.   Es wird lediglich der Modus gesetzt und die Uhr auf einen Defaultzustand
  82.   gebracht.
  83.   !AlarmOff und AlarmSet werden aufgerufen.
  84.  
  85.  
  86. - !AlarmQuit  -- *AlarmQuit
  87.   Kann bei automatischen Programmabläufen am Ende aufgerufen werden, um den
  88.   Computer wieder abzuschalten. Macht quasi nichts, wenn der User eingeschaltet
  89.   hat oder neu initialisiert wurde. Schaltet aber einfach aus, wenn der
  90.   Rechner automatisch läuft.
  91.  
  92. - !AlarmShut  -- *AlarmShut, *Bye
  93.   Shutdown-Programm. Muß am Ende der Arbeit vom User benutzt werden, um die
  94.   nächste Alarmzeit in der Uhr zu setzen. Schaltet außerdem den Rechner aus.
  95.   Entspricht der Shutdown-Funktion des Taskmanagers (Shift-Control-F12).
  96.  
  97. Einfache Abläufe können nun mit Batchfiles erzeugt werden, die zu der
  98. vorgesehenen Zeit durch !Alarm als Task-Alarm gestartet werden können.
  99. Beim Ausschalten des Rechners sucht die SetAlarm-Routine die nächste
  100. Task-Alarm-Zeit und setzt sie in der Uhr.
  101.  
  102. Die Programme sind auch als CLI-Befehle erreichbar (ohne '!').
  103. So kann der automatische Ablauf einfach mit '*AlarmQuit' beendet werden.
  104.  
  105. - Das keyScan-Modul schaltet sich in den InsV-Vektor und fängt die Taste
  106.   <ShiftControlF12> ab. Unter dem Wimp installiert es einen kleinen Modul-Task
  107.   der bei gedrückter Taste einen Taskcommand absetzt:
  108.   einfacher Tastendruck:  "*Filer_OpenDir ...Tools"
  109.   zweifacher Tastendruck: "*AlarmShut"
  110.   Man sollte also die Shutdown-Funktion im TaskManager-Menü nicht mehr
  111.   benutzen.
  112.  
  113. Hardware
  114. --------
  115. Achtung !
  116. - Diese Version mit Schaltung ist nur für A3xx/A4xx/A3000 geeignet und belegt
  117.   den normalerweise ungenutzten Auxiliary-IO Port: Alarm und Aux1/2.
  118. - A3000 haben keinen AuxIOport. Man muß ihn selbst zusammenstellen:
  119.   Benötigt werden: Alarm: IC6, pin 7  -> pin 5 unseres AuxIO-Anschlusses.
  120.                    Aux 1: IC18 pin 17 -> pin 3 unseres AuxIO-Anschlusses.
  121.                    Aux 2: IC18 pin 18 -> pin 2 unseres AuxIO-Anschlusses.
  122. - Nicht geeignet für neuere Rechner mit IOEB usw. (A3010,3020,4000,5000), da
  123.   diese nicht über den Auxiliary-IOPort verfügen und diese Leitungen anders
  124.   benutzten !!
  125. - Rechner mit VIDC-Enhancer benutzen manchmal Aux1 zum umschalten der
  126.   Quarzfrequenzen. Auch das ist nicht sehr geeignet. Also herausfinden
  127.   welche Leitung benutzt wird und für uns die andere benutzen.
  128.   In den Programmen 'SwitchOff' und '!AlarmShut' werden die Auxleitungen
  129.   gesetzt, Bit 0 und Bit 1 können für Aux1/2 respektive geändert werden,
  130.   direkt vor dem CALL-Aufruf.
  131.    
  132.  
  133. Funktion
  134. Der Uhrenbaustein im Archimedes ist ein PCF8583, eine Uhr mit Kalender, Alarm
  135. und Ram. Der Alarm kann eine Leitung am IC auf Masse schalten (open collector).
  136. Er kann durch diverse Möglichkeiten aktiviert werden: Tagesalarm, Datumsalarm,
  137. Timeralarm. Wir benutzen aber nur den Datumsalarm.
  138. Im Defaultzustand der Uhr, zB. nach einem Reset durch Batteriewechsel, gibt
  139. die Alarm-Leitung ein Sekunden-Signal aus. Das ist sehr ärgerlich, denn unsere
  140. Schaltung muß schon sehr sicher verhindern können, daß der Rechner im
  141. Sekundentakt ein- und ausgeschaltet wird. Sie soll sehr wenig Energie
  142. verbrauchen, denn sie wird mit einer Batterie betrieben. Sie soll unaufwendig
  143. sein.
  144. Siehe Schaltung in Abbildung Circuit.
  145. Siehe Bestückungsplan in Abblidung PCB.
  146. Es handelt sich um ein einfaches Flipflop, welches durch ALARM gesetzt und
  147. durch AUX1 oder 2 zurückgesetzt wird. Das erste Gatter vom Eingang aus liefert
  148. dabei lediglich einen bekannten Strom/Spannungspegel der dann in die
  149. Verzögerungsglieder gehen. So muß ein Eingangssignal mindestens 5 Sekunden
  150. lang aktiv und stabil bleiben bevor SET/RESET ausgelöst werden.
  151. Da die Schaltung sehr hochohmig ist, einige Leitungen aber im hochspannugs-
  152. bereich herumliegen können, kann es sein, daß elektromagnetische Einstreuungen
  153. die Funktion stören. Ist mir aber noch nicht passiert.
  154.  
  155. Einbau der Schaltung
  156. Die fertig bestückte Platine besitzt 5 Anschlüsse:
  157. 1) Auxiliary-I/O-Connector
  158.    5polig, wird mit PL10 (beim A3xx/4xx) im Rechner verbunden. Pin 1 ist
  159.    jeweils gekennzeichnet. Liefert die Steuersignale von der Uhr und vom
  160.    Benutzer. Die Signale ab Pin 1 sind: Masse, Aux2, Aux1, C4, Alarm.
  161. 2) und 3) Power bzw. Batterie-Anschlüsse
  162.   jeweils 2polig. Wird einmal mit dem Rechnernetz verbunden und dazu mit
  163.   dem eingebauten Batteriepack. Kann sehr gut an den kleinen Floppy-Anschluß
  164.   angeschlossen werden. Der markierte Leiter dort ist +5V, dann 2 mal Masse
  165.   und 12V.
  166. 4) Switch
  167.   2polig. Liefert eine mit 47Ohm gesicherte Versorgungsspannung für ein Relais.
  168.   Die Masse wird geschaltet durch einen BS108, einen VMOSFET. Der verträgt
  169.   200V und treibt max. 260mA. Leider würde das unsere Batterie nicht gerne
  170.   haben. Ich empfehle ein ELR (elektronisches Lastrelais), da man diese Dinger
  171.   auf Elektronikmärkten billig bekommt ( < 7DM) und sie sich mit 3V, 1.2mA
  172.   ansteuern lassen, dank ihres Optokopplers. Vorsicht allerdings bei
  173.   induktiven Lasten ! Man kann damit keine Energiesparlampe anwerfen...
  174.   Polarität am Switch-Anschluß beachten.
  175. 5) Ein/Ausschalter
  176.   Im Schaltplan, Version 1.00, ist ein zweiter Eingang verzeichnet und auf der
  177.   Platine auch eingebaut. Der eignet sich aber nicht als Einschalter für den
  178.   Benutzer, es sei denn, man hat die Nerven jedesmal 5 Sekunden zu warten, bis
  179.   sich was tut. Im Schaltplan ist eine Änderung verzeichnet die man tunlichst
  180.   einbauen sollte. Man kann mit dem neuen Anschluß zwei Taster bedienen, einen
  181.   zum einschalten, einen zum ausschalten. Montiert man zB. einen Kipptaster
  182.   an die Vorderfront des Gerätes, so kann man endlich mal bequem ein- und
  183.   ausschalten.
  184.   Der Aus-Taster FUNKTIONIERT NICHT, wenn die Alarm-Leitung von der Uhr
  185.   gesetzt/aktiv ist. D.h. es ist ein Alarm eingetreten und der Rechner möchte
  186.   sich nun eingeschaltet wissen und sein Programm starten.
  187.   Man benötigt in diesem Fall wenigstens ein Programm, das die Alarm-Leitung
  188.   deaktiviert. Jedes !iicAlarm-Tool kann dies machen.
  189.   Nichtsdestotrotz braucht man ein Programm, um die Leitung zu deaktivieren.
  190.   Wenn man gerade keines zur Hand hat, muß man leider den Stecker ziehen oder
  191.   die Mehrfachdose am Schalter ausschalten. Die nächste Platinenversion
  192.   ist da bestimmt intelligenter.
  193.  
  194. Zum Schluß
  195. ----------
  196. Die Rechte von !iicAlarm verbleiben bei mir. Die Applikation darf beliebig
  197. kopiert und weitergegeben werden für nichtkommerzielle Anwendungen und nur
  198. solange alles and alles unverändert kopiert wird.
  199. Ich übernehme keine Garantien oder Verantwortungen für was auch immer.
  200. Für Kommentare bin ich immer offen:
  201.  Andreas Barth
  202.   Karl-Eberhardstr. 9
  203.   W-51643 Gummersbach
  204.     Germany
  205.   Tel. 02261/27042
  206.   EMail: Andreas_Barth@ruba.rz.ruhr-uni-bochum.de (etwa bis Sept. 1994)
  207.  
  208. ToDo
  209. -----
  210. Well, it works, eh ?
  211. - Pack everything in a small module.
  212. - build a better circuit.
  213.